#ifndef _FLOG_H_
#define _FLOG_H_

#include "Font.h"

#define LOG_TRACE(_msg, ...)    { m_Library->GetLog()->Message(Log::eMessageType_Trace,   __FILE__, __LINE__, __FUNCTION__, _msg, __VA_ARGS__); }
#define LOG_INFO(_msg, ...)     { m_Library->GetLog()->Message(Log::eMessageType_Info,    __FILE__, __LINE__, __FUNCTION__, _msg, __VA_ARGS__); }
#define LOG_WARNING(_msg, ...)  { m_Library->GetLog()->Message(Log::eMessageType_Warning, __FILE__, __LINE__, __FUNCTION__, _msg, __VA_ARGS__); }
#define LOG_ERROR(_msg, ...)    { m_Library->GetLog()->Message(Log::eMessageType_Error,   __FILE__, __LINE__, __FUNCTION__, _msg, __VA_ARGS__); }
#define LOG_FATAL(_msg, ...)    { m_Library->GetLog()->Message(Log::eMessageType_Fatal,   __FILE__, __LINE__, __FUNCTION__, _msg, __VA_ARGS__); }

namespace Font
{

	class Log
	{
	
	public:

		enum MessageType
		{
			eMessageType_Fatal,
			eMessageType_Error,
			eMessageType_Warning,
			eMessageType_Info,
			eMessageType_Trace,
		};

		Log();
		~Log();

		void Message(int a_Severity, const char* a_File, unsigned int a_CodeLine, const char* a_Function, const char* a_Message, ...);
	
	}; // class Log

}; // namespace Font
	
#endif